﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SRD.Model.SRD.DTO;
using SRD.Model.SRD.Util;
using System.Data.SqlClient;
using System.Data;
using System.Collections;
using System.Web.UI.WebControls;
using System.Configuration;

namespace SRD.Model.SRD.DAO
{
    class ProjetoDAO
    {
        DataClassesSRDDataContext bancoDados = new DataClassesSRDDataContext();
         
         public ProjetoDAO() 
         {
             
         }
                  
         // metodo de busca por parte do nome do projeto         
         public IQueryable findByName(string nomeProjeto, Int32 empresaId)
         {
             var resultado = from p in bancoDados.PROJETOs
                             where p.NM_PROJETO.Contains(nomeProjeto) && p.EMPRESA_ID == empresaId
                             select new
                             {
                                 p.PROJETO_ID,
                                 p.NM_PROJETO,
                                 p.PROFISSIONAL.NM_PROFISSIONAL
                             };
             return resultado;

         }

         //metodo de busca pelo id do projeto 
         public PROJETO findByID(PROJETO projeto)
         {
             var resultado = (from p in bancoDados.PROJETOs
                              where p.PROJETO_ID == projeto.PROJETO_ID
                              select p).First();

             return resultado;
         }

         //metodo para busca completa do projeto ordenado
         public IQueryable findPorjetoLider(Int32 empresaId)
         {
             var resultado = from p in bancoDados.PROJETOs
                             where p.EMPRESA_ID == empresaId
                             select new
                             {
                                 p.PROJETO_ID,
                                 p.NM_PROJETO,
                                 p.PROFISSIONAL.NM_PROFISSIONAL
                             };

             return resultado;
         }

         //metodo para busca completa do projeto ordenado
         public IQueryable findAll(Int32 empresaId)
         {
             var resultado = from p in bancoDados.PROJETOs
                             where p.EMPRESA_ID == empresaId
                             select p;

             return resultado;
         }

        // metodo para iserção do projeto
         public string insert(PROJETO projeto)
         {
             try
             {
                 bancoDados.PROJETOs.InsertOnSubmit(projeto);
                 bancoDados.SubmitChanges();
                 return "Inclusão realizada com sucesso!";
             }
             catch (Exception o)
             {
                 return "Houve erro na inclusão: " + o.Message;
             }
         }

         // metodo para atualização do projeto
         public string update(PROJETO projeto)
         {
             try
             {
                 var projetoExistente = (from p in bancoDados.PROJETOs
                                         where p.PROJETO_ID == projeto.PROJETO_ID
                                         select p).First();
                 projetoExistente.NM_PROJETO = projeto.NM_PROJETO;
                 projetoExistente.EMPRESA_ID = projeto.EMPRESA_ID;
                 projetoExistente.CENTRO_CUSTO_ID = projeto.CENTRO_CUSTO_ID;
                 projetoExistente.LIDER_ID = projeto.LIDER_ID;
                 projetoExistente.ATIVO = projeto.ATIVO;
                 bancoDados.SubmitChanges();
                 return "Atualização realizada com sucesso!";
             }
             catch (Exception o)
             {
                 return "Houve erro na atualização: " + o.Message;
             }
         }

        // metodo para remoção do projeto
         public string delete(PROJETO projeto)
         {
             try
             {
                 var projetoExitente = (from p in bancoDados.PROJETOs
                                        where p.PROJETO_ID == projeto.PROJETO_ID
                                        select p).First();
                 PROJETO proj = projetoExitente;
                 bancoDados.PROJETOs.DeleteOnSubmit(proj);
                 bancoDados.SubmitChanges();
                 return "Registro excluído com sucesso!";
             }
             catch (Exception o)
             {
                 return "Houve erro ao excluir: " + o.Message;
             }
         }
    }
}
